perm filename ZZZ[S1,ALS]1 blob sn#448870 filedate 1979-06-13 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	    UABS ,UADD ,USUB ,UMPY ,UDIV ,UADJ ,UAND ,UBGN ,UBGNB,UCHKF,
C00009 00003		USTP :	(*null case*)
C00021 00004	ENTER_OPC ('ABS ', UABS)	ENTER_OPC ('ADD ', UADD)
C00026 00005				   Instruction summary
C00028 ENDMK
C⊗;
    UABS ,UADD ,USUB ,UMPY ,UDIV ,UADJ ,UAND ,UBGN ,UBGNB,UCHKF,
    UCHKH,UCHKL,UCHKN,UCHKT,UCLAB,UCOMM,UCSP ,UCUP ,UCVT ,UCVT2,
    UDEAD,UDEC ,UDEF ,UDIF ,UDMD ,UDOA ,UDSP ,UDUP ,UEND ,UENDB,
    UENT ,UEXPP,UEXPV,UFJP ,UICUP,UEQU ,UNEQ ,UGEQ ,UGRT ,ULEQ ,
    ULES ,UIEQU,UINEQ,UIGEQ,UIGRT,UILEQ,UILES,UILOD,UIMOV,UIMPP,
    UIMPV,UINC ,UINN ,UINST,UINT ,UIOR ,UISTR,UIXA ,ULAB ,ULCA ,
    ULDA ,ULDC ,ULDP ,ULEX ,ULIVE,ULOC ,ULOD ,UMDEF,UMOD ,UMST ,
    UMUS ,UNEG ,UNEW ,UNOT ,UNSTR,UODD ,UOPTN,UPAR ,UPLEX,UPLOD,
    UPSTR,URET ,URND ,USDEF,USGS ,USQR ,USTP ,USTR ,USWP ,USYM ,
    UTJP ,UTYP ,UTYP2,UUJP ,UUNI ,UUNK ,UXJP ,UXOR );
    case OPC of

	UCHKF, UCHKN, UCHKT, USTP, URET :
		(*null case*);

	UCLAB, ULAB, ULOC, UMST, UNEW, UPLEX, UTJP :
		READINT (I1);

	UEXPP, UIMPP, UIMPV :
		begin
		READINT (I1);
		READNAM (NAM1);
		end;
		
	ULEX :  begin
		READINT (I1);
		READINT (I2);
		end;

	ULDP :	begin
		READINT (I1);
		READINT (I2);
		READNAM (NAM1);
		end;
		


	UEND :	READNAM (NAM0);

	UBGN, UFJP, UUJP : 
		READNAM (NAM1);

	UABS, UADD, USUB, UMPY, UDIV, UAND, UDIF, UDMD, UDSP, UDUP, 
	UEQU, UNEQ, UGEQ, UGRT, ULEQ, ULES, UIEQU,UINEQ,UIGEQ,UIGRT,
	UILEQ,UILES,UINN, UINT, UIOR, UMOD, UMUS, UNEG, UNOT, UODD, 
	USDEF,USGS, USQR, UUNI :
		READTYP (TYP);

	UCVT, UCVT2, URND, USWP, UTYP, UTYP2 :
		begin
		READTYP (TYP);
		READTYP (TYPO2);
		end;

	UDEF, UDEC, UINC, UCHKH, UCHKL, UIXA, UIMOV :
		begin
		READTYP (TYP);
		READINT (I1);
		end;

	UADJ, UICUP, UILOD, UINST, UISTR:
		begin
		READTYP (TYP);
		READINT (I1);
		READINT (I2);
		end;


        UENT :	begin
		READTYP (TYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		READINT (I4);
                READNAM (NAM1);
                READINT (I5);
		end;



	UDEAD, UDOA, UEXPV, ULDA, ULIVE, USYM :
		begin
		READMTYP (MTYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		end;

	UMDEF :	begin
		READMTYP (MTYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		WRITE (OUTPUT, '  ');
		for I := 1 to SLGTH do
		    WRITE (OUTPUT, SVAL[I]);
		end;

	 UXJP :
		begin
		READTYP (TYP);
		READNAM (NAM1);
		READNAM (NAM2);
		READINT (I1);
		READINT (I2);
		end;

	ULOD, UNSTR, UPAR, UPLOD, USTR :
		begin
		READTYP (TYP);
		READMTYP (MTYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		end;

	UCSP :	begin
		READTYP (TYP);
		READNAM (NAM1);
		READINT (I1);
		READINT (I2);
		end;

	UCUP :	begin
		READTYP (TYP);
		READINT (I1);
		READNAM (NAM1);
		READINT (I2);
		READINT (I3);
		end;

	ULDC :	begin
		READTYP (TYP);
		READINT (I1);
		case TYP of
		    TYPUJ :  READINT (I1);
		    TYPUC :  WRITE (OUTPUT, ' ''', chr(I1), '''');
		    TYPUR :  WRITE (OUTPUT, '  ', R1);
		    TYPUN :  (*null case*);
		    TYPUB :  READINT (I1);
		    TYPUS :  READSET (P1);
		end (*case TYP of*);
		end (*ULDC*);

	ULCA :	begin
		READINT (I1);
	 	WHILE (CH <> '''') and not eoln (INPUT) do READ (CH);
  		READ (CH);
		SLGTH := 0;
		while (CH<>'''') or (INPUT↑='''') do
		    begin
		    SLGTH := SLGTH + 1;
		    SVAL[SLGTH] := CH;
		    if CH = '''' then READ (CH);
		    READ (CH);
		    end (*while*);
		end (*ULCA*);

	UCOMM:	begin
		while (CH = ' ') and not eoln(INPUT) do READ(CH);
		SLGTH := 0;
		while (SLGTH < STRINGMAX) and not eoln(INPUT) do
		    begin
		    READ (CH);
		    SLGTH := SLGTH + 1;
		    SVAL[SLGTH] := CH;
		    end (*while*);
		end (*ucomm*);


	UUNK :	begin
		READINT (I2);
		READINT (I3);
		while (CH = ' ') and not eoln(INPUT) do READ(CH);
		SLGTH := 0;
		while (SLGTH < STRINGMAX) and not eoln(INPUT) do
		    begin
		    READ (CH);
		    SLGTH := SLGTH + 1;
		    SVAL[SLGTH] := CH;
		    end (*while*);
		end;

    end (*case OPC of*);

    WRITELN(OUTPUT);

    end (*READNXTINST*);

************

	USTP :	(*null case*);

        UENT :	begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		PRINTINT (I2);
		PRINTINT (I3);
		PRINTINT (I4);
                PRINTNAM (NAM1);
                PRINTINT (I5);
		end;

	ULEX :  begin
		PRINTINT (I1);
		PRINTINT (I2);
		end;

	UEND :  PRINTNAM (NAM0);

	UMST :	begin
		PRINTINT (I1);
		end;

	ULAB, UCLAB : PRINTINT (I1);

	UDEF :	begin
		PRINTMTYP (MTYP);
                PRINTINT (I1);
		end;

(*	USST :	begin
		PRINTTYP (TYP);
		PRINTNAM (NAM1);
		PRINTINT (I1);
		PRINTINT (I2);
		PRINTINT (I3);
		PRINTINT (I4);
		PRINTINT (I5);
		PRINTINT (I6);
		end;
	UTOF : PRINTNAM (NAM1);

	UTON : begin
	       PRINTNAM (NAM1);
               if (NAM1.NAM <> 'UCODE   ')
		 and (NAM1.NAM <> 'PEEPHOLE') then	
		   begin
		   PRINTNAM (NAM2);
		   if NAM2.NAM[1] = 'A' then
		       begin
		       if NAM1.NAM <> 'S1CODE  ' then
			   PRINTINT (I1)
		       end
		   else if NAM2.NAM[1] <> 'P' then
		       ERROR (WINVAL_TRACE);
		   end;
	       end;
*)

	UBGN:	begin						(*14JAN79 PTZ...*)
		PRINTNAM (NAM1);
		end;						(*...14JAN79 PTZ*)

	(*opcode class 1*)
	URET, UCHKF, UCHKN, UCHKT :
		(*null case*);

	(* opcode class 1a*)
	UAND, UDIF, UINN, UINT, UIOR, UNOT, USGS, UUNI :
		PRINTTYP (TYP);

	(*opcode class 2*)
	ULOC, UNEW :				(*14JAN79 PTZ*)
		PRINTINT (I1);

	(*opcode class 2a*)
	UIXA, UIMOV :
		begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		end;


	(*opcode class 3*)
        ULDA:
		begin
		PRINTMTYP (MTYP);
		PRINTINT (I1);
		PRINTINT (I2);
		PRINTINT (I3);
		end;

	(*opcode class 4*)
	UFJP, UUJP :
		PRINTNAM (NAM1);

	(*opcode class 4a*)
	 UXJP :
		begin
		PRINTTYP (TYP);
		PRINTNAM (NAM1);
		PRINTNAM (NAM2);
		PRINTINT (I1);
		PRINTINT (I2);
		end;

	(*opcode class 5*)
	UEQU, UGEQ, UGRT, ULEQ, ULES, UNEQ,
	UIEQU, UIGEQ, UIGRT, UILEQ, UILES, UINEQ :
		PRINTTYP (TYP);

	(*opcode class 6*)
	UADD,UABS,UMOD,UDIV,UDMD,UMPY,UNEG,USUB,USQR,UDUP :
		PRINTTYP (TYP);

	(*opcode class 6a*)
	USWP :
		begin
		PRINTTYP (TYP);
		PRINTTYP (TYPO2);
		end;

	(*opcode class 7*)
	UDEC, UINC, UCHKH, UCHKL:
		begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		end;

	(*opcode class 8*)
	UPAR, ULOD, USTR, UPLOD, UNSTR :
		begin
		PRINTTYP (TYP);
		PRINTMTYP (MTYP);
		PRINTINT (I1);
		PRINTINT (I2);
		PRINTINT (I3);
		end;

        UILOD:
		begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		PRINTINT (I2);
		end;
        UISTR:
		begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		PRINTINT (I2);
		end;

	UCSP :	begin
		PRINTTYP (TYP);
		PRINTNAM (NAM1);
		PRINTINT (I1);
		PRINTINT (I2);
		end;

	UCUP :	begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		PRINTNAM (NAM1);
		PRINTINT (I2);
		PRINTINT (I3);
		end;

	ULDC :	begin
		PRINTTYP (TYP);
		PRINTINT (I1);
		case TYP of
		    TYPUJ :  PRINTINT (I1);
		    TYPUC :  WRITE (OUTPUT, ' ''', chr(I1), '''');
		    TYPUR :  WRITE (OUTPUT, '  ', R1);
		    TYPUN :  (*null case*);
		    TYPUB :  PRINTINT (I1);
		    TYPUS :  PRINTSET (P1);
		end (*case TYP of*);
		end (*ULDC*);

	ULCA :	begin
		PRINTINT (I1);
		WRITE (OUTPUT, '  ''');
		for I := 1 to SLGTH do
		    WRITE (OUTPUT, SVAL[I]);
		WRITE (OUTPUT, '''');
		end (*ULCA*);

	UCOMM:	begin
		WRITE (OUTPUT,' ');
		for I := 1 to SLGTH do
		    WRITE (OUTPUT, SVAL[I]);
		end (* UCOMM*);
		
	USTP :	(*null case*);

        UENT :	begin
		READTYP (TYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		READINT (I4);
                READNAM (NAM1);
                READINT (I5);
		end;

	ULEX :  begin
		READINT (I1);
		READINT (I2);
		end;

	UEND :  READNAM (NAM0);

	UMST :	begin
		READINT (I1);
		end;

	ULAB,UCLAB : READINT (I1);

	UDEF :	begin
		READMTYP (MTYP);
                READINT (I1);
		end;
(*
	USST :	begin
		READTYP (TYP);
		READNAM (NAM1);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		READINT (I4);
		READINT (I5);
		READINT (I6);
		end;
	UTOF : READNAM (NAM1);

	UTON : begin
	       READNAM (NAM1);
               if (NAM1.NAM <> 'UCODE   ')
		 and (NAM1.NAM <> 'PEEPHOLE') then
		   begin
		   READNAM (NAM2);
		   if NAM2.NAM[1] = 'A' then
		       begin
		       if NAM1.NAM <> 'S1CODE  ' then
			   READINT (I1)
		       end
		   else if NAM2.NAM[1] <> 'P' then
		       ERROR (WINVAL_TRACE);
		   end;
	       end;

*)
	UBGN:	begin						(*14JAN79 PTZ...*)
		READNAM (NAM1);
		end;						(*...14JAN79 PTZ*)
(*
	UCHK:	begin					
		READINT (I1);
		READINT (I2);
		end;						*)
	(*opcode class 1*)

	URET, UCHKF, UCHKN, UCHKT :
		(*null case*);

	(*opcode class 1a*)
	UAND, UDIF, UINN, UINT, UIOR, UNOT, USGS, UUNI :
		READTYP (TYP);

	(*opcode class 2*)
	ULOC, UNEW :				(*14JAN79 PTZ*)
		READINT (I1);

	(*opcode class 2a*)
	UIXA, UIMOV :
		begin
		READTYP (TYP);
		READINT (I1);
		end;

	(*opcode class 3*)
	ULDA:
		begin
		READMTYP (MTYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		end;

	(*opcode class 4*)
	UFJP, UUJP :
		READNAM (NAM1);

	(*opcode class 4a*)
	 UXJP :
		begin
		READTYP (TYP);
		READNAM (NAM1);
		READNAM (NAM2);
		READINT (I1);
		READINT (I2);
		end;

	(*opcode class 5*)
	UEQU, UGEQ, UGRT, ULEQ, ULES, UNEQ,
	UIEQU, UIGEQ, UIGRT, UILEQ, UILES, UINEQ :
		READTYP (TYP);

	(*opcode class 6*)
	UADD,UABS,UMOD,UDIV,UDMD,UMPY,UNEG,USUB,USQR,UDUP :
		READTYP (TYP);

	(*opcode class 6a*)
	USWP :
		begin
		READTYP (TYP);
		READTYP (TYPO2);
		end;


	(*opcode class 7*)
	UDEC, UINC, UCHKH, UCHKL:
		begin
		READTYP (TYP);
		READINT (I1);
		end;

	(*opcode class 8*)
	UPAR, ULOD, USTR, UPLOD , UNSTR:
		begin
		READTYP (TYP);
		READMTYP (MTYP);
		READINT (I1);
		READINT (I2);
		READINT (I3);
		end;

        UILOD:
		begin
		READTYP (TYP);
		READINT (I1);
		READINT (I2);
		end;

        UISTR:
		begin
		READTYP (TYP);
		READINT (I1);
		READINT (I2);
		end;

	UCSP :	begin
		READTYP (TYP);
		READNAM (NAM1);
		READINT (I1);
		READINT (I2);
		end;

	UCUP :	begin
		READTYP (TYP);
		READINT (I1);
		READNAM (NAM1);
		READINT (I2);
		READINT (I3);
		end;

	ULDC :	begin
		READTYP (TYP);
		READINT (I1);
		case TYP of
		    TYPUJ :  READINT (I1);
		    TYPUC :  begin
			    READ (CH, CH, CH);
			    I1 := ord(CH) - CHARDIF;	(*CHARDIF*)
			    end;
		    TYPUR :  READREAL (R1);
		    TYPUN :  (*null case*);
		    TYPUB :  READINT (I1);
		    TYPUS :  READSET (P1);
		end (*case TYP of*);
		end (*ULDC*);

	ULCA :	begin
		READINT (I1);
	 	WHILE (CH <> '''') and not eoln (INPUT) do READ (CH);
  		READ (CH);
		SLGTH := 0;
		while (CH<>'''') or (INPUT↑='''') do
		    begin
		    SLGTH := SLGTH + 1;
		    SVAL[SLGTH] := CH;
		    if CH = '''' then READ (CH);
		    READ (CH);
		    end (*while*);
		end (*ULCA*);

	UCOMM:	begin
		while (CH = ' ') and not eoln(INPUT) do READ(CH);
		SLGTH := 0;
		while (SLGTH < STRINGMAX) and not eoln(INPUT) do
		    begin
		    READ (CH);
		    SLGTH := SLGTH + 1;
		    SVAL[SLGTH] := CH;
		    end (*while*);
		end (*ucomm*);

ENTER_OPC ('ABS ', UABS);	ENTER_OPC ('ADD ', UADD);
ENTER_OPC ('SUB ', USUB);	ENTER_OPC ('MPY ', UMPY);
ENTER_OPC ('DIV ', UDIV);	ENTER_OPC ('ADJ ', UADJ);
ENTER_OPC ('AND ', UAND);	ENTER_OPC ('BGN ', UBGN);
ENTER_OPC ('BGNB', UBGNB);	ENTER_OPC ('CHKF', UCHKF);
ENTER_OPC ('CHKH', UCHKH);	ENTER_OPC ('CHKL', UCHKL);
ENTER_OPC ('CHKN', UCHKN);	ENTER_OPC ('CHKT', UCHKT);
ENTER_OPC ('CLAB', UCLAB);	ENTER_OPC ('COMM', UCOMM);
ENTER_OPC ('CSP ', UCSP);	ENTER_OPC ('CUP ', UCUP);
ENTER_OPC ('CVT ', UCVT);	ENTER_OPC ('CVT2', UCVT2);
ENTER_OPC ('DEAD', UDEAD);	ENTER_OPC ('DEC ', UDEC);
ENTER_OPC ('DEF ', UDEF);	ENTER_OPC ('DIF ', UDIF);
ENTER_OPC ('DMD ', UDMD);	ENTER_OPC ('DOA ', UDOA);
ENTER_OPC ('DSP ', UDSP);	ENTER_OPC ('DUP ', UDUP);
ENTER_OPC ('END ', UEND);	ENTER_OPC ('ENDB', UENDB);
ENTER_OPC ('ENT ', UENT);	ENTER_OPC ('EXPP', UEXPP);
ENTER_OPC ('EXPV', UEXPV);	ENTER_OPC ('FJP ', UFJP);
ENTER_OPC ('ICUP', UICUP);	ENTER_OPC ('EQU ', UEQU);
ENTER_OPC ('NEQ ', UNEQ);	ENTER_OPC ('GEQ ', UGEQ);
ENTER_OPC ('GRT ', UGRT);	ENTER_OPC ('LEQ ', ULEQ);
ENTER_OPC ('LES ', ULES);	ENTER_OPC ('IEQU', UIEQU);
ENTER_OPC ('INEQ', UINEQ);	ENTER_OPC ('IGEQ', UIGEQ);
ENTER_OPC ('IGRT', UIGRT);	ENTER_OPC ('ILEQ', UILEQ);
ENTER_OPC ('ILES', UILES);	ENTER_OPC ('ILOD', UILOD);
ENTER_OPC ('IMOV', UIMOV);	ENTER_OPC ('IMPP', UIMPP);
ENTER_OPC ('IMPV', UIMPV);	ENTER_OPC ('INC ', UINC);
ENTER_OPC ('INN ', UINN);	ENTER_OPC ('INST', UINST);
ENTER_OPC ('INT ', UINT);	ENTER_OPC ('IOR ', UIOR);
ENTER_OPC ('ISTR', UISTR);	ENTER_OPC ('IXA ', UIXA);
ENTER_OPC ('LAB ', ULAB);	ENTER_OPC ('LCA ', ULCA);
ENTER_OPC ('LDA ', ULDA);	ENTER_OPC ('LDC ', ULDC);
ENTER_OPC ('LDP ', ULDP);	ENTER_OPC ('LEX ', ULEX);
ENTER_OPC ('LIVE', ULIVE);	ENTER_OPC ('LOC ', ULOC);
ENTER_OPC ('LOD ', ULOD);	ENTER_OPC ('MDEF', UMDEF);
ENTER_OPC ('MOD ', UMOD);	ENTER_OPC ('MST ', UMST);
ENTER_OPC ('MUS ', UMUS);	ENTER_OPC ('NEG ', UNEG);
ENTER_OPC ('NEW ', UNEW);	ENTER_OPC ('NOT ', UNOT);
ENTER_OPC ('NSTR', UNSTR);	ENTER_OPC ('ODD ', UODD);
ENTER_OPC ('OPTN', UOPTN);	ENTER_OPC ('PAR ', UPAR);
ENTER_OPC ('PLEX', UPLEX);	ENTER_OPC ('PLOD', UPLOD);
ENTER_OPC ('PSTR', UPSTR);	ENTER_OPC ('RET ', URET);
ENTER_OPC ('RND ', URND);	ENTER_OPC ('SDEF', USDEF);
ENTER_OPC ('SGS ', USGS);	ENTER_OPC ('SQR ', USQR);
ENTER_OPC ('STP ', USTP);	ENTER_OPC ('STR ', USTR);
ENTER_OPC ('SWP ', USWP);	ENTER_OPC ('SYM ', USYM);
ENTER_OPC ('TJP ', UTJP);	ENTER_OPC ('TYP ', UTYP);
ENTER_OPC ('TYP2', UTYP2);	ENTER_OPC ('UJP ', UUJP);
ENTER_OPC ('UNI ', UUNI);	ENTER_OPC ('UNK ', UUNK);
ENTER_OPC ('XJP ', UXJP);	ENTER_OPC ('XOR ', UXOR);
	
			   Instruction summary
int	integer
real	real
num	integer or real

mnem.	Parameters		Stack before		stack after
----	----------		-------------------	-------------------
				top-2	top-1	top	top-2	top-1	top
				-----	-----	-----	-----	-----	-----

ABS 	{I,J,Q,R}			...	d.t.		...	d.t.
ADD 	{I,J,K,L,Q,R}		...	d.t.	d.t.		...	d.t.
SUB 	{I,J,K,L,Q,R}		...	d.t.	d.t.		...	d.t.
MPY 	{I,J,K,L,Q,R}		...	d.t.	d.t.		...	d.t.
DIV 	{I,J,K,L,Q,R}		...	d.t.	d.t.		...	d.t.
ADJ	{S} <↔> <len>			...	set		...	set
AND	{B}				bool	bool		...	bool
BGN	<name>   				...			...
BGNB
CHKF

CHKH
CHKL
CHKN
CHKT
CLAB
COMM
CSP 
CUP 
CVT 
CVT2

DEAD
DEC 
DEF 
DIF 
DMD 
DOA 
DSP 
DUP 
END 
ENDB

ENT 
EXPP
EXPV
FJP 
ICUP
EQU 
NEQ 
GEQ 
GRT 
LEQ 

LES 
IEQU
INEQ
IGEQ
IGRT
ILEQ
ILES
ILOD
IMOV
IMPP

IMPV
INC 
INN 
INST
INT 
IOR 
ISTR
IXA 
LAB 
LCA 

LDA 
LDC 
LDP 
LEX 
LIVE
LOC 
LOD 
MDEF
MOD 
MST 

MUS 
NEG 
NEW 
NOT 
NSTR
ODD 
OPTN
PAR 
PLEX
PLOD

PSTR
RET 
RND 
SDEF
SGS 
SQR 
STP 
STR 
SWP 
SYM 

TJP 
TYP 
TYP2
UJP 
UNI 
UNK 
XJP 
XOR